#!/usr/bin/env python3
# coding:utf-8

__author__ = 'MC'


import time


def Dis_Db(Link):
    print("{0:^75}".format('+' + '-' * 75 + '+'))
    print("{0:^60}".format("数据库连接名称:" + Link.attrib['name']))
    print("{0:^75}".format('+' + '-' * 75 + '+'))

    print("{0:^25}|{1:^25}|{2:^25}".format("Host", "Port", "User"))
    print("{0:^25}|{1:^25}|{2:^25}".format(Link.find('host').text,
                                           Link.find('port').text,
                                           Link.find('user').text))
    print("{0:^75}".format('+' + '-' * 75 + '+'))

    print("{0:^25}|{1:^25}|{2:^25}".format("Password", "Database", "Encode"))
    print("{0:^25}|{1:^25}|{2:^25}".format("********",
                                           Link.find('database').text,
                                           Link.find('encode').text))
    print("{0:^75}".format('+' + '-' * 75 + '+'))

    print("{0:^30}|{1:^30}".format("添加时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(float(Link.find('time').text))),
                                   "更新时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(float(Link.find('u_time').text)))))
    print("{0:^75}".format('+' + '-' * 75 + '+'))

    print(" ")

def Dis_Tk(Task):
    print("{0:^75}".format('+' + '-' * 75 + '+'))
    print("{0:^60}".format("计划任务名称:" + Task.attrib['name']))
    print("{0:^75}".format('+' + '-' * 75 + '+'))

    print("{0:^25}|{1:^25}|{2:^25}".format("SC", "MO", "D"))
    print("{0:^25}|{1:^25}|{2:^25}".format(Task.find('sc').text,
                                           Task.find('mo').text,
                                           Task.find('d').text))
    print("{0:^75}".format('+' + '-' * 75 + '+'))

    print("{0:^25}|{1:^25}|{2:^25}".format("ST", "-", "-"))
    print("{0:^25}|{1:^25}|{2:^25}".format(Task.find('st').text,"-","-"))
    print("{0:^75}".format('+' + '-' * 75 + '+'))

    print("{0:^60}".format("DL:" + Task.find('dl').text))
    print("{0:^75}".format('+' + '-' * 75 + '+'))

    print("{0:^30}|{1:^30}".format("添加时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(float(Task.find('time').text))),
                                   "更新时间:" + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(float(Task.find('u_time').text)))))
    print("{0:^75}".format('+' + '-' * 75 + '+'))

    print(" ")

def Dis_Command(DictCommand):
    print("{0:^75}".format('+' + '-' * 75 + '+'))
    for Key in DictCommand:
        CommandStr = ''
        for Command in DictCommand[Key]:
            CommandStr += Command + "|"
        print("{0:<35}".format(" " * 8 + Key + ":" + CommandStr[0:-1]))
        print("{0:^75}".format('+' + '-' * 75 + '+'))

def Dis_Help_Show():
    print("Show <Command>")
    print("    使用此命令来查看系统配置信息，如需更新配置，请使用Config命令，可用指令如下：")
    print("    DbList:读取已配置的数据库链接")
    print("    TkList:读取已设置的计划任务")

def Dis_Help_Backup():
    print("Backup LinkName FilePath")
    print("    使用此命令来手动备份一个已存在的数据库连接")
    print("    LinkName:由Set命令设置的数据库连接名称，可使用Show DbList命令获取已设置的数据库连接")
    print("    FilePath:要备份到的目录，若要使用默认值，请指定None")
def Dis_Help_Config():
    print("Config (Database|Task) Name:Options")
    print("    Name:指定数据库连接名称或计划任务名称")
    print("    Options: --Database")
    print("        Host:指定数据库连接地址")
    print("        Port:数据库连接端口")
    print("        User:连接用户名")
    print("        Password:用户密码")
    print("        Database:连接数据库名")
    print("        Encode:连接字符集，默认为utf8")
    print("    Options: --Task")
    print("        sc:指定命令运行周期，可用参数为:DAILY(每N天运行一次),WEEKLY(每N周运行一次),MONTHLY(每N月运行一次);N为参数mo设定的值")
    print("        mo:指定模式重复周期，默认为1，即每1天或每1周或每1月运行一次;若sc为DAILY，则可设定1~365;若sc为WEEKLY，则可设定1~52;若sc为MONTHLY，则可设定1~12")
    print("         d:指定周内或月内运行的日期。周的有效值为:MON/TUE/WED/THU/FRI/SAT/SUN;月的有效值为1~31;通配符指定所有日期;若sc为DAILY，此值无效")
    print("        st:指定运行任务的开始时间，格式为HH:mm")
    print("        dl:指定任务要备份的数据库连接，多个连接使用-号分隔")
    print("    注意:若更新计划任务，则可更改的参数只有st/dl参数，其他参数不可更改，若需修改，请使用Task命令删除计划任务后再行更新")

def Dis_Help_Sys():
    print("Sys (BPath) Value")
    print("    使用Sys命令更改系统设置")
    print("    BPath:设置默认备份目录")

def Dis_Sys(DictCommand):
    print("{0:^75}".format('+' + '-' * 75 + '+'))
    for Key in DictCommand:
        print("{0:<35}".format(" " * 8 + Key + ":" + DictCommand[Key]))
        print("{0:^75}".format('+' + '-' * 75 + '+'))